package com.ruoyi.project.online_experimentStu.service;

import com.ruoyi.project.online_experimentStu.domain.LookExperiment;
import com.ruoyi.project.online_experimentStu.domain.OnlineExperimentStu;
import com.ruoyi.project.online_experimentStu.domain.OnlineExperimentTea;
import com.ruoyi.project.online_experimentStu.domain.Student;
import com.ruoyi.project.system.dept.domain.Dept;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * @author lvyongwei
 */
public interface OnlineExperimentStuService {

    /**
     * 实验布置
     * @param onlineExperimentTea  实验内容
     * @param students             学生信息
     * @param updateSupport        上传状态
     * @return
     */
      public String experimentalSetup(OnlineExperimentTea onlineExperimentTea, List<Student> students, boolean updateSupport);

    /**
     * 获取学生班级，即对应的部门
     * @return
     */
    public List<Dept> getStudentDept();



    /**
     * 获取所有布置的实验
     * @param onlineExperimentTea
     * @return
     */
    public List<OnlineExperimentTea> getAllOnlineExperimentTea(OnlineExperimentTea onlineExperimentTea);

    /**
     * 获取到所有学生试验情况
     * @param onlineExperimentStu
     * @return
     */
    public List<OnlineExperimentStu> getAllOnlineExperimentStu(OnlineExperimentStu onlineExperimentStu);


    /**
     * 学生查看实验   包括待学习，待批改，已批改状态
     */
    public List<LookExperiment> getAllLookExperiment(LookExperiment lookExperiment);


    /**
     * 学生点击开始试验
     */
    public LookExperiment getLookExperiment(String experimentTeaId);

    /**
     * 学生点击重做
     */
    public LookExperiment getLookExperiment1(String experimentTeaId,Long studentId);

    /**
     * 学生提交实验成绩
     */
    public boolean updateExperimentStu(OnlineExperimentStu onlineExperimentStu);

    /**
     * 查看教师评分等信息
     * @param map
     * @return
     */
    public OnlineExperimentStu getOnlineExperimentStu(Map<String,Object> map);

    /**
     * 根据布置的实验id获取到教室布置的实验信息
     * @param experimentTeaId
     * @return
     */
    public OnlineExperimentTea getOnlineExperimentTea(String experimentTeaId);


    /**
     * 删除教师布置的实验即学生提交的实验的相关内容
     * @param experiemntTeaId
     * @return
     */
    public boolean deleteExperimentTea(String experiemntTeaId);


    /**
     * 根据布置的实验id获取到布置的实验
     * @param experimentTeaId
     * @return
     */
    public OnlineExperimentTea getExperimentTeaById(String experimentTeaId);

    /**
     * 修改布置的实验结束时间
     * @param onlineExperimentTea
     * @return
     */
    public boolean editExperimentTeaTime(OnlineExperimentTea onlineExperimentTea);


    /**
     * 根据教师布置的实验id获取到实验结果
     */
    public List<OnlineExperimentStu> getResult(String experimentTeaId);


    /**
     * 获取项目提供的实验报告模板
     * @param experimentTeaId
     * @return
     */
    public String getExperimentReport(String experimentTeaId);

}
